﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VemTransporte.Models.Fachada;
using VemTransporte.Models.Basica;

namespace VemTransporte.Views.UsuarioEmpresa
{
    public partial class MenuEmpresaCadastroVeiculo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Empresa emp = (Empresa)Session["EmpresaLogada"];

                if (emp != null)
                {
                    ImageEmpresaLogoTipo.ImageUrl = string.Format("/EmpresaLogos/{0}.jpg", emp.Id);
                    if (emp.TipoAcesso.Equals("ADMEMPRESA"))
                    {
                        liMenuEmpresaCadastro.Visible = true;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = true;
                        liMenuCadastrarTelefones.Visible = true;
                        liMenuAlterarSenhaEmpresa.Visible = true;
                        liMenuAlterarLinhaEmpresa.Visible = false;
                        liMenuCadastroParadaEmpresa.Visible = false;
                        liMenuHoraLinhaEmpresa.Visible = false;
                        liMenuEmpresaVeiculo.Visible = true;
                    }
                    else if (emp.TipoAcesso.Equals("ADMTRANSPORTEPUBLICO"))
                    {
                        liMenuEmpresaCadastro.Visible = false;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = false;
                        liMenuCadastrarTelefones.Visible = false;
                        liMenuAlterarSenhaEmpresa.Visible = false;
                        liMenuAlterarLinhaEmpresa.Visible = true;
                        liMenuCadastroParadaEmpresa.Visible = true;
                        liMenuHoraLinhaEmpresa.Visible = true;
                        liMenuEmpresaVeiculo.Visible = false;
                    }
                    else
                    {

                    }

                    if (emp.NomeFantasia.IndexOf(" ") > 0)
                    {
                        LabelNomeEmpresa.Text = emp.NomeFantasia.Substring(0, emp.NomeFantasia.IndexOf(" "));
                    }
                    else
                    {
                        LabelNomeEmpresa.Text = emp.NomeFantasia;
                    }

                    IList<Linha> linhas = Fachada.Instance.ProcurarLinhaTodos();

                    DropDownListLinhas.DataSource = linhas;
                    DropDownListLinhas.DataBind();
                    DropDownListLinhas.Items.Insert(0, "<-- Selecione -->");

                    GridViewVeiculo.DataSource = emp.Veiculos;
                    GridViewVeiculo.DataBind();

                }
                else
                {
                    Response.Redirect("LoginEmpresa.aspx");
                }
            }
        }

        protected void ButtonAdicionarVeiculo_Click(object sender, EventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {

                if (DropDownListLinhas.SelectedIndex == 0)
                {
                    ErrorMessage.Text = "Selecione uma linha!";
                }
                else
                {
                    ErrorMessage.Text = "";

                    Veiculo _veiculoEmp = null;

                    IList<Linha> _linhas = Fachada.Instance.ProcurarLinhaTodos();

                    _veiculoEmp = (Veiculo)Session["_veiculoAlterar"];

                    if (_veiculoEmp != null)
                    {
                        ButtonAdicionarVeiculo.Text = "Adicionar";

                        Session["_veiculoAlterar"] = null;

                        if (emp.Veiculos.Contains(_veiculoEmp))
                        {
                            emp.Veiculos[emp.Veiculos.IndexOf(_veiculoEmp)].Placa = TextBoxPlaca.Text;                          

                            emp.Veiculos[emp.Veiculos.IndexOf(_veiculoEmp)].Linha = _linhas[DropDownListLinhas.SelectedIndex - 1];
                        }
                    }
                    else
                    {
                        //Adiciona novo telefone
                        _veiculoEmp = new Veiculo();
                        _veiculoEmp.Placa = TextBoxPlaca.Text;

                        _veiculoEmp.Linha = _linhas[DropDownListLinhas.SelectedIndex - 1];

                        emp.AddVeiculo(_veiculoEmp);
                    }

                    Session["EmpresaLogada"] = emp;

                    GridViewVeiculo.DataSource = emp.Veiculos;/**/
                    GridViewVeiculo.DataBind();

                    TextBoxPlaca.Text = null;
                    DropDownListLinhas.SelectedIndex = 0;
                }
            }
            else
            {
                Response.Redirect("LoginEmpresa.aspx");
            }

        }

        protected void GridViewVeiculo_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string placa = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "placa"));


                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).CommandArgument = placa;

                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).Attributes.Add("onClick",
                       " return confirm('Confirma o cancelamento do veículo de placa: " + placa + "?');");
            }

        }

        protected void GridViewVeiculo_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            e.Cancel = true;
        }

        protected void GridViewVeiculo_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {
                ErrorMessage.Text = "";

                if (e.CommandName == "excluir")
                {
                    try
                    {
                        string placa = e.CommandArgument.ToString();

                        foreach (Veiculo item in emp.Veiculos.ToList())
                        {
                            if (item.Placa.Equals(placa))
                            {
                                emp.Veiculos.Remove(item);

                                break;
                            }
                        }

                        GridViewVeiculo.DataSource = emp.Veiculos;
                        GridViewVeiculo.DataBind();
                             
                        Session["EmpresaLogada"] = emp;

                        ScriptManager.RegisterStartupScript(UpdatePanel1, typeof(Page), "MSG", "javascript:alert('Excluido com Sucesso! Salve as alterações para que ocorra efeito.');", true);
                    }
                    catch (Exception ex)
                    {
                        ErrorMessage.Text = ex.Message;
                    }
                }
            }
            else
            {
                Response.Redirect("LoginEmpresa.aspx");
            }
        }

        protected void GridViewVeiculo_RowEditing(object sender, GridViewEditEventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {
                try
                {
                    ErrorMessage.Text = "";

                    Session["_veiculoAlterar"] = emp.Veiculos[e.NewEditIndex];

                    TextBoxPlaca.Text = emp.Veiculos[e.NewEditIndex].Placa;

                    DropDownListLinhas.ClearSelection();

                    IList<Linha> _linhas = Fachada.Instance.ProcurarLinhaTodos();

                    DropDownListLinhas.SelectedIndex = _linhas.IndexOf(emp.Veiculos[e.NewEditIndex].Linha) + 1;

                    TextBoxPlaca.Focus();

                    ButtonAdicionarVeiculo.Text = "Alterar";

                    e.Cancel = true;
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }
            }
            else
            {
                //Empresa não encontrado 
                Response.Redirect("LoginEmpresa.aspx", false);
            }

        }

        protected void ButtonSalvar_Click(object sender, EventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {
                try
                {
                    Fachada.Instance.Salvar(emp);

                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Confimado", "alert('Alterado com sucesso!'); window.location='MenuEmpresa.aspx';", true);
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }

            }
            else
            {
                //Empresa não encontrado 
                Response.Redirect("LoginEmpresa.aspx", false);
            }
        }
    }
}